// ActionScript file
import classes.Aluno;

import flash.events.Event;

import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.events.DataGridEvent;
import mx.events.FlexEvent;
import mx.managers.PopUpManager;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.mxml.RemoteObject;

import title_window.EditaAluno;

public var popUp:EditaAluno;

//array responsável por preecnher combo
[Bindable]
public var combo123:ArrayCollection = new ArrayCollection(
	[ {label:"10"}, 
		{label:"20"}, 
		{label:"30"} ]);

//array reponsável por preencher tabelaa
[Bindable]
public var alunosCadastrados:ArrayCollection;	
//objeto aluno
public var obj_aluno:Aluno;		
//array de turmas necessário ao editar o aluno
[Bindable]
public var cbturma:ArrayCollection;

//timer que espera a digitação quando há procura de aluno por nome
private var time:Timer = new Timer(1000, 1);

//controla a tabela
[Bindable]
private var paginaAtual:Number=0;
//total de registroa mostrados na tabela
[Bindable]
private var TotalRegistros:Number = 0;

//inicializa algumas funções ao ser iniciado o modulo
private function init():void
{
	// Timer para aguardar quando digita
	time.addEventListener("timer", TimeEnd);
	// Evento para quando digitar
	campoBusca.addEventListener(Event.CHANGE, changeFiltro)
	PesquisarMensagens();	
	// evento das funções das tabelas
	dgAlunos.addEventListener("editar", editar);
	dgAlunos.addEventListener("excluir", excluir);
	dgAlunos.addEventListener("informaoes", informaoes);	
	dgAlunos.addEventListener("certificado", certificado);
	this.controle_turma.listarTodosTurma();
}
//controla a filtro da tabela - atraves do timer
private function changeFiltro(e:Event):void
{
	time.stop();
	time.start();
}
// se o evento for executado, chama a função que faz a busca
private function TimeEnd(e:TimerEvent):void
{
	paginaAtual = 0;
	PesquisarMensagens();
}
//realiza a pesquisa de dados para preencher a tabela
public function PesquisarMensagens():void
{
	this.controle_aluno.listarTodosPaginacao(campoBusca.text,
		Number(cbQuantidade.selectedLabel)*paginaAtual, 
		cbQuantidade.selectedLabel);							
}			
//evento chamado após a busca, responsavel por preencher a tabela
public function listaPaginacao_result(event:ResultEvent):void
{			
	alunosCadastrados=event.result as ArrayCollection;			
	if(paginaAtual==0){
		BTVoltar.enabled=false;
	}else{
		BTVoltar.enabled=true;
	}
}
//evento chamado se houver erro ao pesquisar
public function listaPaginacao_fault(event:FaultEvent):void
{
	Alert.show("erro ao carregar dados");
}
//funcção botão avançar
private function avancar():void
{
	paginaAtual += 1;
	PesquisarMensagens();
}
//função botão voltar
private function voltar():void
{
	paginaAtual -= 1;
	PesquisarMensagens();
}
//função do combo
private function changeCombobox():void
{
	paginaAtual = 0;
	PesquisarMensagens();
}
//função do botão editar da tabela
//abre o pop-up editar 	
public function editar(e:Event):void
{
	popUp = EditaAluno(PopUpManager.createPopUp(this,EditaAluno,true));
	popUp.addEventListener("PopUpFechou",editou);				
	popUp.aluno=Aluno(dgAlunos.selectedItem);
	popUp.cbturma=cbturma;
}
//função chamada após fechar o pop-up editar aluno
private function editou(evt:Event):void
{
	obj_aluno=popUp.aluno;
	this.controle_aluno.editaAluno(obj_aluno);
}
//função botão excluir da tabela
public function excluir(e:Event):void
{
	Alert.show("Deseja excluir o aluno '"+dgAlunos.selectedItem.nome+"' ?","Excluir Aluno", Alert.YES | Alert.NO ,null,opcao);	
}
//função verifica se deseja excluir 
private function opcao(event:CloseEvent):void{
	if(event.detail==Alert.YES){
		this.controle_aluno.removerAluno(dgAlunos.selectedItem);
	}					
}
//evento ficha de inscricao da tabela
//chama a ficha de cadastro do aluno
public function informaoes(e:Event):void
{
	ficha_inscricao(dgAlunos.selectedItem.id_aluno);		
}
//evento certificado
public function certificado(e:Event):void
{
	gera_certificado(dgAlunos.selectedItem.id_aluno);
}
//evento chamado se for editado com sucesso
protected function edita_aluno_result(event:ResultEvent):void
{
	PesquisarMensagens();
	Alert.show("Editado com sucesso");
}
//evento chamado se for removido com sucesso
protected function remover_aluno_result(event:ResultEvent):void
{
	PesquisarMensagens();
	Alert.show("Removido com sucesso");
}
//evento chamado se for listado com sucesso
protected function listar_turma_result(event:ResultEvent):void
{
	cbturma=event.result as ArrayCollection;	
}
//evento se ocorrer problema ao listar aluno
protected function listar_turma_fault(event:FaultEvent):void
{
	Alert.show("Problema ao popular combo turma");
}
//evento se ocorrer problema ao editar aluno
protected function edita_aluno_fault(event:FaultEvent):void
{
	Alert.show("Erro ao editar");
}
//evento se ocorrer problema ao remover aluno
protected function remover_aluno_fault(event:FaultEvent):void
{
	Alert.show("Falha ao remover");				
}
